package main

import "fmt"

func main() {
	str := "hello world"

	// 1.普通for循环
	for i := 0; i < len(str); i++ {
		fmt.Print(string(str[i]))
	}

	fmt.Println()

	// 2.替换普通while循环
	n := len(str) - 1
	for n >= 0 {
		fmt.Print(string(str[n]))
		n--
	}

	// 3.while True
	count := 1
	fmt.Println()
	for {
		if count == 20 {
			fmt.Println(count)
			break
		}
		count += 1
	}

	// 4.for range 循环
	// for key,value := range iterator{}
	for x := range str {
		fmt.Printf("%s", string(str[x]))
	}

	// 建议改用引用类型，其底层数据不会被复制。
	// a := []int{1, 2, 3, 4, 5}
	a := [3]int{0, 1, 2}
	for i, v := range a { // index、value 都是从复制品中取出。
		if i == 0 { // 在修改前，我们先修改原数组。
			a[1], a[2] = 999, 999
			fmt.Println("\n", a) // 确认修改有效，输出 [0, 999, 999]。
		}
		a[i] = v + 100 // 使用复制品中取出的 value 修改原数组。
	}
	fmt.Println(a) // 输出
}
